#ifndef IMPLEMENTACIONINTERPRETE_H
#define IMPLEMENTACIONINTERPRETE_H
//
#include "interprete.h"
#include "parser.h"
#include "implementacionstopword.h"
#include "implementacionsteming.h"
#include "implementacionmerger.h"
#include "src/implementacionhash.h"
#include "implementacionmerger.h"
#include "globals.h"

#include <QString>

#include <string>

using std::string;
//
class implementacionInterprete: public interprete
{
private:
    parser p;
	implementacionStopWord stopword;
	implementacionSteming steming;
	implementacionHash hash;
    implementacionMerger merger;
    
    //metodos privados
    string nombreSinExtension(char* nombre);
    string obtenerSoloNombre(string nombreConPath);
    
public:
	implementacionInterprete();
	//implemento los metodos de la interface
	void interpretarNuevosDocumentos(QProgressBar *progress, int cantidadDocumentos) const;
	FILE* obtenerDocumentoOriginalTxt(int idDocumento) const;
	FILE* obtenerDocumentoHash(int idDocumento) const;
	string strObtenerDocumentoHash(int idDocumento) const;
	string strObtenerDocumentoPDF(int idDocumento) const;
	FILE* obtenerDocumentoPDF(int idDocumento) const;
	bool verificarArchivosNuevos() const;
	int obtenerUltimoIdHash() const;
	string aplicarFiltro(string frase) const;
	int obtenerProximoIDAProcesar() const;
	bool esStopWord(string palabra) const;
	bool esStemming(string palabra) const;
	string filtrarPalabra(string palabra) const;
	string aplicarStemming(string palabra) const;
	//metodos de la clase
	void convertirDocumentoPDF(QString docName);
	virtual ~implementacionInterprete();
};
#endif
